﻿using IdCard;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PoundConsole.IdCard
{
    public class IdCardHelper
    {
       public  byte[] senddata(string ip, int port)
        {
            //发送数据串
            byte[] by = strToHexByte("AAAAAA96690003200122");
            CommandSender.SendTcpCommand(ip, port, by);
            by = strToHexByte("AAAAAA96690003200221");
            CommandSender.SendTcpCommand(ip, port, by);
            by = strToHexByte("AAAAAA96690003300132");//返回长度1295*2
            byte[] response = CommandSender.SendTcpCommand(ip, port, by);
            //SendBuff(by, by.Length, MultiPortClass.COM1);
            //by = strToHexByte("AAAAAA96690003301023");//返回长度1297*2
            //后面2条只需选择其中之一即可
            if (response != null)
            {
                //Console.WriteLine($"收到响应（HEX）: {BitConverter.ToString(response)}");
                //Console.WriteLine($"原始字节数: {response.Length}");
            }
            return response;
        }
       public  string jiexie(byte[] IdBytes)
        {
            //string rawData = "AA AA AA 96 69 05 08 00 00 90 01 00 04 00 48 96 7F 5E 64 57 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 31 00 30 00 31 00 31 00 39 00 39 00 30 00 30 00 32 00 31 00 34 00 71 5C 1C 4E 01 77 33 96 37 8C BF 53 20 5F CB 79 47 95 68 67 66 6B B3 5C 51 67 30 00 30 00 32 00 35 00 2D 00 31 00 F7 53 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 33 00 37 00 31 00 35 00 32 00 31 00 31 00 39 00 39 00 30 00 30 00 32 00 31 00 34 00 31 00 34 00 31 00 39 00 33 96 37 8C BF 53 6C 51 89 5B 40 5C 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 32 00 30 00 31 00 39 00 30 00 34 00 32 00 32 00 32 00 30 00 33 00 39 00 30 00 34 00 32 00 32 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 57 4C 66 00 7E 00 32 00 00 FF 85 41 51 51 51 3E 08 79 2D 20 E4 79 D2 BD 5A 9E C9 83 79 51 AE 92 52 51 51 5D 3E BD 1F 93 39 B1 B0 54 E4 16 A5 7B 54 0E 0D 3B 91 ED 2C 6D 7A F3 B7 86 24 CA BA 53 6D 48 E7 FF 6F E1 9B AA FA EA DB 19 BB 13 69 A6 B8 CC 2D 54 7A 79 C0 59 33 A2 9B 19 1F 9D 6E 72 B7 12 03 A5 CC C1 65 A6 DB 42 DA 69 FA 14 61 EA 87 EA A9 BF 52 0C 6D 53 DF 94 AD ED 0A D6 72 41 48 7A F0 6F DF BC 40 C8 13 04 DA FD AD FC F5 B2 B6 DD 8E 3E A0 C5 C0 D7 C7 D9 51 94 D9 BA D0 82 61 3F 61 E9 E1 FF EA F5 10 79 D2 9D 3F 7B 58 24 6C 70 97 35 1C 4C E4 C1 E2 5E 7D C6 91 D6 C1 9C 19 F0 69 B2 F7 1A 1C AF E9 BF 9F 09 0B 99 E9 54 FC CB 19 C2 08 4B BC 75 69 F0 7B F6 F1 CF 25 EF 2E 9D 7D 7A B6 E8 86 89 34 EC D4 2B B6 5A 18 35 AC F5 3B 2B 33 8C A4 DC 7F 1D 07 E5 61 FD 2C 17 58 4E EE 0C 5E 04 15 6D 9B AF 75 CA 00 6B DB 2D 78 FC 07 A8 B9 33 C9 42 0E 89 22 97 8C 22 DF D5 4D C5 F3 BE B3 3D 25 18 C6 1A 58 91 96 2E A7 E8 D2 14 2A 23 ED 5E 78 A0 15 30 B2 6D 59 6C F6 31 BD F2 FA E6 D9 2E 10 47 DB 4D 5A 2F 6B E2 DC 68 AA 24 44 6F D3 23 37 1D A6 B7 94 C1 7D A5 27 85 BD AB BB 9E E8 D0 FB 9D 09 DF 10 0A 7B 89 D3 A4 DD AE 51 FF 09 47 B3 F4 AF 8F FA 03 95 A3 56 48 05 97 D5 6F 87 92 6D C9 DC 20 30 87 B4 6F DF 29 A5 92 05 35 64 57 A0 54 35 C0 D1 46 14 71 06 C0 17 BE 8D 9C 69 3C 94 CD 36 CA 16 36 80 22 3A 93 EA 4D 81 18 AC A2 2B 6D 0F C9 D0 79 61 80 72 3D D2 6F D8 BA 5E DD 0E CC 4A 42 6C 8E E3 1C B1 85 FE 93 26 E3 95 F0 B1 8F D3 6B 23 B0 51 1B EA AB F8 13 1E 93 9B A6 0B 45 21 D9 D0 7D FC E4 49 0F BC 82 8B AE 51 32 44 44 3D 8B CE 3A 82 FD 4A 2A BC 05 91 05 AF C0 74 35 9B FA D6 F6 D6 A5 E7 FD FD 7E 0B E0 7B C5 AA 9D 1A 80 8F 5A 28 8F 96 F1 7E AC 47 B4 D0 B1 61 B0 65 3F 49 9A 5B CC 66 87 11 A5 32 FF B3 21 8E 58 52 FE 42 62 24 E6 F5 88 A5 02 99 72 EF EF A4 3A 0B 55 1D FD 47 FC 4F B3 B0 AA 80 95 94 F0 4D 18 B3 93 65 16 F4 E9 7B C5 7B 79 1D DC E9 D6 20 EB 8B 28 6E 86 8B 7E 2F F3 34 F3 AD 51 3D AE 51 5B 79 8C 18 31 82 52 15 A8 72 FE AD F6 24 EF CD 04 52 0A 54 F0 AA 50 61 8D 75 88 41 DE A6 74 F7 81 CB 54 99 8E 2A 79 41 13 A1 05 76 A3 D8 E0 3E E0 6E A6 AF E5 64 55 E5 5B 80 C2 88 E6 4D 94 33 CC 0C 2B CA FD 9B 65 E6 69 BE BB 11 EF 3A E6 E6 41 4E 2F 96 1B EE 85 10 2C 32 4B 8B 99 0D 97 C1 02 96 BE 53 83 14 54 1E 35 82 36 E2 21 40 70 13 3B 5B 56 A8 95 2D CF 7D 91 F7 9A 09 EC 9A C1 B8 FF 4E 45 F5 9A 7D 57 DE 8E E0 11 C1 E1 96 A8 FA 88 01 50 D7 EC E7 3A E1 2A B4 F9 78 27 F1 D6 40 96 36 90 53 61 7D CB 10 75 5D 5D ED 6F 40 49 96 E0 08 7B 2D 57 BA C5 DE 11 A0 AB 93 E5 5F A2 80 00 49 D0 26 F4 D7 ED BC 84 0C 7B F5 31 E2 C9 3E 54 AE 51 24 53 72 01 02 83 2B D2 3F 06 CA FB C9 0D 1A 03 9E 23 5A 3E 3F 7D 87 55 64 C7 EB 3F A8 48 1E AF E5 53 1C AE 51 85 DB 46 31 99 F5 D6 92 73 76 44 16 1A 30 C1 ED 59 80 F7 D4 21 CD AF 46 08 A8 44 40 10 FB 74 2D 25 11 88 ED 46 F3 97 6D 23 6A 20 BA A6 E6 88 79 96 CA 3B 19 BC E3 04 57 ED 51 24 38 CF EF EE D1 A6 D3 46 5A 3E CC 49 5E 32 C7 56 95 28 00 58 31 44 21 13 EE AF F5 36 53 5C F1 D3 0A E6 93 4F 2F 32 DB 81 F5 A7 72 EC 9E 07 CA A8 86 A6 AF C7 F2 9E D0 A5 27 DE 6E DC 63 CA 05 61 99 A5 8A B5 DB 5B 00 4A FC B3 3F 1D 7B B5 9E 5C 49 96 E8 05 5A 35 79";
            // string str = "AA AA AA 96 69 05 08 00 00 90 01 00 04 00 D8 9A 77 6D 1E 97 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 32 00 30 00 31 00 31 00 39 00 38 00 36 00 31 00 31 00 32 00 34 00 71 5C 7F 89 01 77 73 5E 65 90 BF 53 2D 4E FD 90 61 4E 5C 67 51 67 0F 5C 95 4E 57 88 39 00 F7 53 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 31 00 34 00 32 00 34 00 33 00 31 00 31 00 39 00 38 00 36 00 31 00 31 00 32 00 34 00 30 00 36 00 32 00 34 00 73 5E 65 90 BF 53 6C 51 89 5B 40 5C 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 32 00 30 00 30 00 37 00 30 00 39 00 32 00 38 00 32 00 30 00 31 00 37 00 30 00 39 00 32 00 38 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 57 4C 66 00 7E 00 32 00 00 FF 85 16 51 51 51 3E 71 0D D5 64 F3 0F 65 4D 7A 66 0B 40 68 7E F6 DF 82 01 6F BE 4C 60 A9 5A 91 E8 2E E3 05 DE D3 0A 06 68 59 13 7A 3D 62 B4 AC E5 DD 4A 39 8C 76 01 B9 62 ED 07 5A D9 D3 B9 BE EA E7 A3 B4 AC 7B 13 B0 D9 B1 6F 11 AE DD 52 51 51 5A 3E 84 EB AA DD 0E B2 DB 6C 86 D9 01 1F 3A C1 C5 FA B5 0B EF 3B 64 76 DF AE 51 D9 2E 39 3D 7D 5C 8A 68 BF DB BB 29 9D 93 01 E5 57 34 2F CE 99 BE 6A C5 02 32 00 DD D7 D7 67 25 F2 F5 E1 46 D6 91 51 BD A6 D4 B0 35 86 55 4A 8F 7B 71 27 38 25 5C 09 4E C0 5D B3 CA B2 DF 09 9E 41 DB CB C7 9F A8 07 29 0B 3A 76 B9 5F D8 9B 5E 53 33 8F 98 18 AB 5C 28 3F 5D 65 CD F4 1B 43 DF 27 5D EF 62 5C C2 55 8D 92 93 EF 22 BD 23 6D B0 68 E6 28 25 63 87 67 21 67 4D 4C AF B9 AB EC AC 5B 21 50 CA B9 91 86 BC 29 9A 85 97 4B 50 14 FE EF 9A A7 B4 F1 54 F1 F2 39 96 B4 25 0E 7E 1A AF 4A 2C 6E 3E FE 24 DD 21 26 44 A5 D8 8E 69 9F D8 98 35 D7 BF A3 4D 01 D7 68 4F 4C AB C9 B4 23 DF 33 CF 54 F2 5F C1 85 64 FA 1C F5 C2 B8 79 1C 6C E2 A1 8E B7 9B 6C 1A 62 B0 35 A5 FD CF 25 D8 D4 99 1A F6 98 1B 91 8A 0F 63 C7 08 05 CA C3 9E 40 45 C7 0D BF FD FA 51 6A F8 54 D9 A4 BD D1 F7 1A 96 F7 51 63 41 18 CF ED 26 BC 6E 64 C0 83 A0 3C 1F 34 9B 9C E4 82 1B 9B 0D 0D 22 B5 1B 82 65 A2 8A 6A B5 09 F8 24 25 97 AE 51 88 DC C9 3B 36 22 1C 9A A2 28 69 A0 DF 97 76 4C 84 33 3D 9C 92 A8 AB 0A EB 12 55 BC BE 57 4F 49 AA 54 D3 6A 2A 84 F7 5D 4B 99 44 DA D1 4C 6C 98 7C 91 02 4E A8 D9 26 1E C2 05 FF 29 50 A5 50 D4 FD 06 47 61 CE 4E 50 0C EC FC 3A 66 82 28 2A DF E1 94 CB 1D E7 68 97 C9 31 F5 4B 6C 64 C6 ED BC 81 EF 92 D2 B9 6A A5 B2 CC 3B D4 01 29 60 42 41 93 AE 51 78 74 72 73 91 E6 16 F5 3E 7C 13 7F 6C 34 5A 65 64 70 F3 3F B2 5E 3A 0F DC BC 7D ED 8B E7 9D 6C EA A1 BA 58 3D 89 90 12 64 3D EA 4F 95 A4 F7 81 44 E1 33 A2 CA E7 FE D6 1F 2C 81 6A 98 0D B8 FD 92 47 D2 4F 84 98 76 DE D6 A6 78 2D BC 04 EB 14 77 2D B9 72 C4 A7 1B FC 45 6D 70 CB 7D 59 50 E5 22 16 C9 D8 15 C3 1C 3F 88 35 2F CC 90 E1 93 A2 9E 42 09 6F AE 51 60 DE 57 13 BC 58 13 6B CD 54 3C 21 4C 43 AE 51 03 31 03 29 A5 A8 C1 3F BB 3E 2A 77 D3 03 84 E2 7B 2F 02 86 1D 14 DF A1 18 82 5E 20 D0 49 75 F2 5A 45 73 74 12 79 7E 83 36 13 E9 FB 8C A3 46 B9 57 48 37 BA D7 5C DA 10 2F B3 5B B2 7A 6F 6D F1 66 71 25 E2 A0 AF 47 81 52 BE 8C 91 B5 12 47 90 47 3D 55 2C D6 A9 35 E8 18 9C A9 B5 F6 FC 3F 77 1F C3 DD AA 4C B6 47 A8 DC 77 21 0D 0A 61 08 36 82 8C CC D3 90 5A D2 98 B6 07 01 52 57 4E E6 C9 9E 89 19 97 C6 6E 3C 34 09 5E 13 21 D0 64 86 C9 20 F0 26 51 EC 6E 6F 4E CD E6 A5 C8 44 25 B7 2A E0 07 90 08 ED 48 59 57 21 03 56 D6 38 81 C3 25 A3 E2 B5 82 D2 22 D8 0C 47 C0 9C 4A 8F CA BA 9D D7 A3 3B 51 1A CC 40 4B E7 1B 0E 4B 5A 3E 0B 3A 3E B3 51 10 37 07 86 AD E6 63 46 BD 7C D9 9A E8 F5 28 B6 6E 51 56 5F 9F 4E 0B B0 F4 FC 65 C5 1A C7 54 AF AC 38 FE 48 8A 06 94 03 3F FD AE 51 34 C7 26 38 7F 6F 4D EC 0B 8B 63 88 9E B1 39 FB 53 C1 22 1A BF 22 B3 0E 6C BC 7F F6 97 D6 27 5A 3E 84 9F 31 F6 84 7C DF 77 23 6B C7 5A 23 80 52 54 8F 0E 18 7A 42 C1 36 90 6E AF 96 F5 7F 0F 47 F4 B7 D0 AD EA 30 87 04 B3 B7 EA D2 0E 35 2C 2D 07 E7 42 2E 67 75 42 AC 68 F5 5D 62 90 FC 9E 89 FC EA CD 50 80 33 A4 05 89 25";
            IDCardInfo id = new IDCardInfo();
            //IDCardInfo idInfo =id.ParseIDCardData(strToHexByte(rawData));
            IDCardInfo idInfo = id.ParseIDCardData(IdBytes);
            //Console.WriteLine($"{DateTime.Now}"); // 输出：
            //Console.WriteLine($"姓名: {idInfo.Name}"); // 输出：张XX
            Console.WriteLine($"身份证号: {idInfo.IDNumber}"); // 输出：10119900214XXXXXX
            //Console.WriteLine($"性别: {idInfo.Gender}"); // 输出：张XX
            //Console.WriteLine($"地址: {idInfo.Address}"); // 输出：10119900214XXXXXX
            //Console.WriteLine($"照片大小: {idInfo.PhotoData.Length}字节");
            return idInfo.IDNumber;


        }
        /// <summary>
        /// Byte转16进制字符串
        /// </summary>
        /// <param name="bytes"></param>
        /// <returns></returns>
        static string byteToHexStr(byte[] bytes)
        {
            string returnStr = "";
            if (bytes != null)
            {
                for (int i = 0; i < bytes.Length; i++)
                {
                    returnStr += bytes[i].ToString("X2");
                }
            }
            return returnStr;
        }
        /// <summary>
        /// 16进制字符串转Byte
        /// </summary>
        /// <param name="hexString"></param>
        /// <returns></returns>
        private static byte[] strToHexByte(string hexString)
        {
            hexString = hexString.Replace(" ", "");
            if ((hexString.Length % 2) != 0)
                hexString += " ";
            byte[] returnBytes = new byte[hexString.Length / 2];
            for (int i = 0; i < returnBytes.Length; i++)
                returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
            return returnBytes;
        }
    }
}
